/**
 * MAnimation.java
 * classes: com.hymobile.common.animation.MAnimation
 * 梁天刚 created at 2011-12-8 上午11:39:53
 */
package com.wzz.common.animation;

import android.view.animation.Animation;

/**
 * com.hymobile.common.animation.MAnimation
 * 
 * @author 梁天刚
 * 
 *         created at 2011-12-8 上午11:39:53</br>
 *         
 *         android 本身的动画 有BUG，相对父控件的位置计算有误。
 *         其它三个M动画 用法和 原有无甚区别，只是不能在配置文件中使用。
 */
public class MAnimation extends Animation {
  private int left, top;

  
  
  /**
   * @param childLeft 开始动画控件的左上角 X
   * 
   * @param childTop 开始动画控件的左上角 Y
   */
  public void setLeftTop(int childLeft, int childTop){
    left = childLeft;
    top = childTop;
  }

  /**
   * 计算相对点的X坐标
   * @param type
   * @param value
   * @param size
   * @param parentSize
   * @return
   */
  protected float resolveXSize(int type, float value, int size, int parentSize) {
    switch (type) {
    case ABSOLUTE:
      return value;
    case RELATIVE_TO_SELF:
      return size * value;
    case RELATIVE_TO_PARENT:
      return parentSize * value - left;
    default:
      return value;
    }
  }
 
  /**
   * 计算相对点的Y坐标
   * @param type
   * @param value
   * @param size
   * @param parentSize
   * @return
   */
  protected float resolveYSize(int type, float value, int size, int parentSize) {
    switch (type) {
    case ABSOLUTE:
      return value;
    case RELATIVE_TO_SELF:
      return size * value;
    case RELATIVE_TO_PARENT:
      return parentSize * value - top;
    default:
      return value;
    }
  }
  
}
